 
{ВСПЛЫВАЮЩЕЕ МЕНЮ - ПОИСК ЗАКАЗА}
procedure TfmMenager.miFindModuleClick(Sender: TObject);
{------------------------------------------------------------------------------
 1. открываем форму в точке клика
 2. если номер АСУ не введен - выход
 3. искать ОДИН! самый свежий номер АСУ, готовый у этого менеджера.
 4. если запись нашлась добавить в таблицу
 5. переходим на найденную запись
 ------------------------------------------------------------------------------}
var
  rec_id: variant;
begin
  with fmNumASU do begin                                                        {1}
    top:=Mouse.CursorPos.Y;
    left:=Mouse.CursorPos.X;
    ShowModal;
  end;
  if NumberASU = '' then exit;                                                  {2}
  rec_id := QuerySQL('SELECT rec_id FROM store WHERE (num_asu_new = ' +         {3}
     NumberASU + ') AND (date_finish IS NOT NULL) AND (customer = ' + code_users +
     ') ORDER BY date_order DESC LIMIT 1');
  if rec_id = NULL then begin
    MessageBox(0,'Пока такого номера в базе заказов нет.', 'Поиск' ,
      MB_APPLMODAL + MB_ICONSTOP + MB_OK);
    exit;
  end;
  with qrReady do begin
    FilterSQL := FilterSQL_Ready + ' OR (rec_id = ' + VarToStr(rec_id) + ')';   {4}
    Locate('rec_id',rec_id,[loCaseInsensitive,loPartialKey]);                   {5}
  end;
end;

          { найти по №АСУ запись и добавить в запрос (см. выше)}
procedure TfmMenager.grdModuleTitleBtnClick(Sender: TObject; ACol: Integer; Column: TColumnEh);
begin
  miFindModule.OnClick(miFindModule)
end;

{Вывод сообщения о готвности заказа.}
procedure TfmMenager.tmrOrderTimer(Sender: TObject);
{-------------------------------------------------------------------------------
 1. обновляем все таблицы
 2. ищем один готовый заказ для данного менеджера с невыведенным сообщением о готовности
 3. если заказа нет - выход.
 4. переходим на найденную запись.
 5. в зависимости от типа заказа выводим сообщение
 6. отмечаем что сообщение произведено.
 ------------------------------------------------------------------------------}
var
  rec_id: variant;
 begin
  qrTask.Refresh; {1}
  qrOrder.Refresh;
  qrReady.Refresh;
  rec_id := QuerySQL('SELECT rec_id FROM store WHERE customer = ' + code_users +{2}
    ' AND (date_finish IS NOT NULL) AND (NOT message) LIMIT 1;');
  if rec_id = NULL then exit; {3}
  QuerySQL('UPDATE store SET message = 1 WHERE rec_id = ' + VarToStr(rec_id)); {6}
  with qrReady do begin
    qrReady.Locate('rec_id',rec_id,[loCaseInsensitive,loPartialKey]); {4}
    case FieldByName('kind').AsInteger of {5}
      0 : begin
        MessageBox(0,PWideChar('Ваш модуль готов. №АСУ ' + FieldByName('num_asu_new').AsString),
          cnstInfo, MB_APPLMODAL + MB_ICONINFORMATION + MB_OK + MB_TOPMOST);
        end;
      1 : begin
        MessageBox(0,'Ваш баннер готов. №АСУ', cnstInfo, MB_APPLMODAL + MB_ICONINFORMATION + MB_OK + MB_TOPMOST);
        end;
    end;
   end;
end;

